/*
 * 
 * 
 * 
 */
package com.hboxs.asl.service;

import com.hboxs.asl.entity.Product;
import com.hboxs.asl.entity.SpecificationValue;

import java.util.Set;

/**
 * Service - 规格值
 */
public interface SpecificationValueService extends BaseService<SpecificationValue, Long> {

    /**
     * 检查规格至是否存在
     *
     * @param ids 规格值数组
     */
    boolean checkExist(Long[] ids);

    /**
     * 检查规格值是否为商品所有
     *
     * @param product 商品
     * @param ids     规格值数组
     */
    boolean checkPossess(Product product, Long[] ids);

    /**
     * 检查规格值是否属于相同id
     *
     * @param ids 当前选择的规格值数组
     * @return boolean
     */
    boolean checkSame(Long[] ids);

    /**
     * 查找不可选的规格
     *
     * @param product 商品
     * @param ids     当前选择的规格值数组
     * @return ids
     */
    Set<Long> findDisableIds(Product product, Long[] ids);

    /**
     * 用规格值查找商品
     *
     * @param product 商品
     * @param ids 当前选择的规格值数组
     * @return 商品
     */
    Product findProductBySpecVals(Product product, Long[] ids);

    /**
     * 商品未拥有的规格值
     *
     * @param product 商品
     * @return disableI ds
     */
    Set<Long> notPossess(Product product);
}